From 493b30c2a83c95cac1669d842132b53f0b1b543e Mon Sep 17 00:00:00 2001 From: =?utf8?q?=D0=A0=D1=83=D1=81=D0=BB=D0=B0=D0=BD=20=D0=98=D0=B6=D0=B1?= =?utf8?q?=D1=83=D0=BB=D0=B0=D1=82=D0=BE=D0=B2?= Date: Tue, 28 May 2019 16:37:28 +0000 Subject: [PATCH] GDK W32: No more child windows We don't have child windows (the window-inside-a-window kind of windows) anymore. Remove all the code related to that. --- gdk/win32/gdkgeometry-win32.c | 155 ---------------------------------- gdk/win32/gdksurface-win32.c | 23 +---- gdk/win32/gdksurface-win32.h | 9 -- gdk/win32/meson.build | 1 - 4 files changed, 1 insertion(+), 187 deletions(-) delete mode 100644 gdk/win32/gdkgeometry-win32.c diff --git a/gdk/win32/gdkgeometry-win32.c b/gdk/win32/gdkgeometry-win32.c deleted file mode 100644 index e07168928b..0000000000 --- a/gdk/win32/gdkgeometry-win32.c +++ /dev/null @@ -1,155 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - */ - -/* gdkgeometry-win32.c: emulation of 32 bit coordinates within the - * limits of Win32 GDI. The idea of big window emulation is more or less - * a copy of the X11 version, and the equvalent of guffaw scrolling - * is ScrollWindowEx(). While we determine the invalidated region - * ourself during scrolling, we do not pass SW_INVALIDATE to - * ScrollWindowEx() to avoid a unnecessary WM_PAINT. - * - * Bits are always scrolled correctly by ScrollWindowEx(), but - * some big children may hit the coordinate boundary (i.e. - * win32_x/win32_y < -16383) after scrolling. They needed to be moved - * back to the real position determined by gdk_surface_compute_position(). - * This is handled in gdk_surface_postmove(). - * - * The X11 version by Owen Taylor - * Copyright Red Hat, Inc. 2000 - * Win32 hack by Tor Lillqvist - * and Hans Breuer - * Modified by Ivan, Wong Yat Cheung - * so that big window emulation finally works. - */ - -#include "config.h" -#include "gdk.h" /* For gdk_rectangle_intersect */ -#include "gdkinternals.h" -#include "gdkprivate-win32.h" -#include "gdkwin32.h" - -#define SIZE_LIMIT 32767 - -typedef struct _GdkSurfaceParentPos GdkSurfaceParentPos; - -static void -tmp_unset_bg (GdkSurface *window) -{ - GdkWin32Surface *impl; - - impl = GDK_WIN32_SURFACE (window); - - impl->no_bg = TRUE; -} - -static void -tmp_reset_bg (GdkSurface *window) -{ - GdkWin32Surface *impl; - - impl = GDK_WIN32_SURFACE (window); - - impl->no_bg = FALSE; -} - -void -_gdk_surface_move_resize_child (GdkSurface *window, - gint x, - gint y, - gint width, - gint height) -{ - GdkWin32Surface *impl; - - g_return_if_fail (window != NULL); - g_return_if_fail (GDK_IS_SURFACE (window)); - - impl = GDK_WIN32_SURFACE (window); - GDK_NOTE (MISC, g_print ("_gdk_surface_move_resize_child: %s@%+d%+d %dx%d@%+d%+d\n", - _gdk_win32_surface_description (window), - window->x, window->y, width, height, x, y)); - - if (width * impl->surface_scale > 65535 || height * impl->surface_scale > 65535) - { - g_warning ("Native children wider or taller than 65535 pixels are not supported."); - - if (width * impl->surface_scale > 65535) - width = 65535 / impl->surface_scale; - if (height * impl->surface_scale > 65535) - height = 65535 /impl->surface_scale; - } - - window->x = x; - window->y = y; - window->width = width; - window->height = height; - impl->unscaled_width = width * impl->surface_scale; - impl->unscaled_height = height * impl->surface_scale; - - _gdk_win32_surface_tmp_unset_parent_bg (window); - _gdk_win32_surface_tmp_unset_bg (window, TRUE); - - GDK_NOTE (MISC, g_print ("... SetWindowPos(%p,NULL,%d,%d,%d,%d," - "NOACTIVATE|NOZORDER)\n", - GDK_SURFACE_HWND (window), - window->x * impl->surface_scale, - window->y * impl->surface_scale, - impl->unscaled_width, - impl->unscaled_height)); - - API_CALL (SetWindowPos, (GDK_SURFACE_HWND (window), NULL, - window->x * impl->surface_scale, - window->y * impl->surface_scale, - impl->unscaled_width, - impl->unscaled_height, - SWP_NOACTIVATE | SWP_NOZORDER)); - - _gdk_win32_surface_tmp_reset_bg (window, TRUE); -} - -void -_gdk_win32_surface_tmp_unset_bg (GdkSurface *window, - gboolean recurse) -{ - g_return_if_fail (GDK_IS_SURFACE (window)); - - if (window->destroyed || !GDK_SURFACE_IS_MAPPED (window)) - return; - - tmp_unset_bg (window); -} - -void -_gdk_win32_surface_tmp_unset_parent_bg (GdkSurface *window) -{ - if (window->parent == NULL) - return; - - _gdk_win32_surface_tmp_unset_bg (window->parent, FALSE); -} - -void -_gdk_win32_surface_tmp_reset_bg (GdkSurface *window, - gboolean recurse) -{ - g_return_if_fail (GDK_IS_SURFACE (window)); - - if (window->destroyed || !GDK_SURFACE_IS_MAPPED (window)) - return; - - tmp_reset_bg (window); -} diff --git a/gdk/win32/gdksurface-win32.c b/gdk/win32/gdksurface-win32.c index 5ccc7525e9..07fe55b35b 100644 --- a/gdk/win32/gdksurface-win32.c +++ b/gdk/win32/gdksurface-win32.c @@ -268,7 +268,7 @@ _gdk_win32_surface_enable_transparency (GdkSurface *window) DWM_BLURBEHIND blur_behind; HRGN empty_region; HRESULT call_result; - HWND parent, thiswindow; + HWND thiswindow; if (window == NULL || GDK_SURFACE_HWND (window) == NULL) return FALSE; @@ -284,12 +284,6 @@ _gdk_win32_surface_enable_transparency (GdkSurface *window) thiswindow = GDK_SURFACE_HWND (window); - /* Blurbehind only works on toplevel windows */ - parent = GetAncestor (thiswindow, GA_PARENT); - if (!(GetWindowLong (thiswindow, GWL_STYLE) & WS_POPUP) && - (parent == NULL || parent != GetDesktopWindow ())) - return FALSE; - empty_region = CreateRectRgn (0, 0, -1, -1); if (empty_region == NULL) @@ -1127,11 +1121,6 @@ gdk_win32_surface_move (GdkSurface *window, if (window->state & GDK_SURFACE_STATE_FULLSCREEN) return; - if (GetAncestor (GDK_SURFACE_HWND (window), GA_PARENT) != GetDesktopWindow ()) - { - _gdk_surface_move_resize_child (window, x, y, window->width, window->height); - } - else { RECT outer_rect; GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); @@ -1175,11 +1164,6 @@ gdk_win32_surface_resize (GdkSurface *window, if (window->state & GDK_SURFACE_STATE_FULLSCREEN) return; - if (GetAncestor (GDK_SURFACE_HWND (window), GA_PARENT) != GetDesktopWindow ()) - { - _gdk_surface_move_resize_child (window, window->x, window->y, width, height); - } - else { RECT outer_rect; @@ -1225,11 +1209,6 @@ gdk_win32_surface_move_resize_internal (GdkSurface *window, GDK_SURFACE_HWND (window), width, height, x, y)); - if (GetAncestor (GDK_SURFACE_HWND (window), GA_PARENT) != GetDesktopWindow ()) - { - _gdk_surface_move_resize_child (window, x, y, width, height); - } - else { RECT outer_rect; GdkWin32Surface *impl = GDK_WIN32_SURFACE (window); diff --git a/gdk/win32/gdksurface-win32.h b/gdk/win32/gdksurface-win32.h index cbe0472fb5..1d6c4b3626 100644 --- a/gdk/win32/gdksurface-win32.h +++ b/gdk/win32/gdksurface-win32.h @@ -261,7 +261,6 @@ struct _GdkWin32Surface * We don't actually set margins to 0, we just set this bit. */ guint zero_margins : 1; - guint no_bg : 1; guint inhibit_configure : 1; /* Set to TRUE if window is using true layered mode adjustments @@ -349,14 +348,6 @@ struct _GdkWin32SurfaceClass GType _gdk_win32_surface_get_type (void); -void _gdk_win32_surface_tmp_unset_bg (GdkSurface *window, - gboolean recurse); -void _gdk_win32_surface_tmp_reset_bg (GdkSurface *window, - gboolean recurse); - -void _gdk_win32_surface_tmp_unset_parent_bg (GdkSurface *window); -void _gdk_win32_surface_tmp_reset_parent_bg (GdkSurface *window); - void _gdk_win32_surface_update_style_bits (GdkSurface *window); gint _gdk_win32_surface_get_scale_factor (GdkSurface *window); diff --git a/gdk/win32/meson.build b/gdk/win32/meson.build index 11f8da78b2..9567c96609 100644 --- a/gdk/win32/meson.build +++ b/gdk/win32/meson.build @@ -12,7 +12,6 @@ gdk_win32_sources = files([ 'gdkdrag-win32.c', 'gdkdrop-win32.c', 'gdkevents-win32.c', - 'gdkgeometry-win32.c', 'gdkglcontext-win32.c', 'gdkglobals-win32.c', 'gdkhdataoutputstream-win32.c', -- 2.30.2